package framework.automaton;

/**
 * The Grid is essentially a 2-dimensional array of State Objects.
 * This interface defines a State, extending off of Comparable. The plugin
 * writes a subclass of this and provides information regarding that state .
 * 
 * @author Bill Ge, Alex Yoo, May Zhai
 */
public interface State{
	
	/**
	 * @return string representation of the state 
	 */
	public String toString();
	
	/**
	 * Provide a unique integer identifier for the program. This method must be implemented
	 * in order for the plugin to work correctly, specifically, the Mapping class.
	 * @return an unique integer representing the state
	 */
	public int hashCode();
	
	/**
	 * Checks whether two States are equal. This method must be implemented
	 * in order for the plugin to work correctly, specifically, the Mapping class.
	 * @return true if the two States are equal
	 */
	public boolean equals(Object arg0);
}
